// 枚举（Enum）

export {} // 确保跟其他示例没有成员冲突  

// 枚举声明
// enum PostStatus {
//     draft = 0,
//     unpublish = 1,
//     published = 2,
// }

// 如果后面不用等号的话， 枚举的值默认会按顺序累加 
// 如果是第一个枚举变量有明确的数值， 那么后面的枚举会在第一个值的基础上进行累加
// 在 enum 关键字前加 const， 可去掉枚举编译后的双向键值对问题
const enum PostStatus {
    draft,
    unpublish,
    published,
}

// 如果是字符串枚举， 需要给每个成员手动设置成员值
// enum PostStatus {
//     draft= 'draft',
//     unpublish= 'unpublish',
//     published='published',
// }

// 枚举可以给一组数值取更好辨别的名称
// 一个枚举中只会存在几个固定的值， 并不会出现超出返回的可能性
const post = {
    title: 'Hello TypeScript',
    content: 'TypeScript is a typed superset of JavaScript',
    status: PostStatus.draft // 0 // 1 // 2
}

// 枚举类型会入侵到我们运行时的代码， 会影响编译后的结果
// 会编译成双向健值对对象
// 可以使用索引去获取枚举的值
// console.log(PostStatus[0])